package jp.gr.java_conf.koharasjk.syncstickynotes;

import android.app.ActionBar;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
import android.widget.EditText;

public class MainActivity extends Activity {

	// ログ出力用
	private final String TAG = "MainActivity";

	// ダイアログ表示のクラスのインスタンスを生成
	private ProgressDialog mProgressDialog;

	// メモの内容表示部
	private EditText editTextContent;

	// 同期フラグ trueなら上書き falseなら読込
	private boolean flag;

	private Handler mHandler;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
				.permitAll().build();
		StrictMode.setThreadPolicy(policy);

		getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
		ActionBar mActionBar = getActionBar();
		mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);

		setContentView(R.layout.main);

		// 内容表示部の初期化
		editTextContent = (EditText) findViewById(R.id.editText3);

		mHandler = new Handler();
	}

	@Override
	protected void onStart() {
		super.onStart();
		mProgressDialog = new ProgressDialog(this);
		mProgressDialog.setMessage("処理を実行中です...");
		mProgressDialog.setCancelable(false);
	}

	// @Override
	// protected void onActivityResult(int requestCode, int resultCode, Intent
	// data) {
	// super.onActivityResult(requestCode, resultCode, data);
	// switch (requestCode) {
	// case 193:
	// break;
	// default:
	// break;
	// }
	// }

	@Override
	protected void onResume() {
		super.onResume();
		DbUtil.init(getApplicationContext());
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		Log.d(TAG, "onOptionsItemSelected");
		switch (item.getItemId()) {
		// 同期ボタンなら
		case R.id.menu_refresh:
			mProgressDialog.show();

			// AsyncTaskの場合
			// new Thread(new Runnable() {
			//
			// public void run() {
			//
			// // 更新か読込かを判断
			// flag = DbUtil.compareUpdateSeqNum();
			// }
			// });
			//
			// new
			// DbUpdateTask(getApplicationContext()).execute(editTextContent.getText().toString());
			// editTextContent.setText(new DbSelectTask().execute(?????????));

			// 別スレッドで同期処理を実行
			new Thread(new Runnable() {
				public void run() {
					// 日時を比較する
					flag = DbUtil.compareUpdateSeqNum();
					if (flag) {
						// flagがtrueなら更新
						DbUtil.dbUpdate(editTextContent.getText().toString());
					} else {
						// flagがfalseなら読込
						mHandler.post(new Runnable() {

							public void run() {
								editTextContent.setText(DbUtil.dbSelect());

							}
						});
					}
				}
			}).start();
			mProgressDialog.dismiss();
			break;

		// メニューボタンなら
		case R.id.menu_preference:
			Intent intent = new Intent(getApplicationContext(),
					PrefActivity.class);
			startActivityForResult(intent, 193);
			break;
		default:
			break;
		}
		return true;
	}

}